1. Technical Field
The present invention relates generally to resource provisioning systems, and in particular to a method, system, and product for automatically determining a valid ordering of provisioning operations implemented by such systems to reach a desired resource configuration state through the use of planning methods.
2. Description of the Related Art
Resource provisioning systems, or provisioning systems, enable the configuration of a set of interconnected computing resources. Such resources, or managed resources, include, for example, servers, firewalls, and software. A provisioning system makes available a set of provisioning operations that will automate some configuration tasks performed on the set of managed resources. For example, a provisioning operation may assign a port on a network switch (often called a switch port) to a particular virtual local area network (VLAN).
This configuration operation is one in a sequence of configuration operations that needs to be invoked to connect a server to a VLAN. Provisioning systems maintain a configuration repository including information about the set of managed resources and their current configuration state. Provisioning operations change the content of the configuration repository to reflect the new state of managed resources resulting from its execution.
Provisioning operations are defined to carry out one or more specific configuration tasks. The number of configuration tasks and the number of affected resources can vary widely between provisioning operations. A provisioning operation can be very specific, for example, define a new VLAN on a single network switch resource from a particular type, say, CISCO™ 6500 series switch. On the other hand, a provisioning operation may carry out many configuration tasks and affect a large set of resources, for example, define a VLAN on a set of interconnected network switches of different types and perform related tasks such as configure VLAN routing.
To deploy a new service or a distributed application, or to perform any other configuration activity, such as applying a security patch update, a user must manually invoke a long sequence of configuration operations from a graphical user interface (GUI) or command line interface (CLI). Alternatively, some provisioning systems allow the user to define a sequence of provisioning operations, and then trigger their automatic execution. Such definition of sequences of provisioning operations is sometimes called provisioning workflow.
Common configuration activities in large data centers where a provisioning system is used may include hundreds of configuration operations that install and configure various software, hardware and network elements. The order of provisioning operations in the provisioning workflow is important as the wrong order can lead to a situation where connectivity with managed resources is lost and the entire execution of the workflow fails to complete. Preconditions for each and effects of each provisioning operation must be well understood and taken into account when defining a provisioning workflow.
Therefore, the definition of a workflow to realize configuration activities is today a manual, slow and error prone process. It is a key problem for users of provisioning systems to determine which provisioning operations should be invoked, in what order, and with what parameters in order to bring the system from the current state to its desired state.